package com.leyou.auth.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.leyou.auth.entity.ClientInfo;
import com.leyou.auth.mapper.ClientMapper;
import com.leyou.auth.service.ClientService;
import com.leyou.common.exception.LyException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@Service
public class ClientServiceImpl extends ServiceImpl<ClientMapper, ClientInfo> implements ClientService{
    @Autowired
    private PasswordEncoder passwordEncoder;

    @Value("${ly.jwt.key}")
    private String key;

    @Override
    public String getSecretKey(String clientId, String secret) {
        if(StringUtils.isEmpty(clientId) || StringUtils.isEmpty(secret)){
            throw new LyException(400,"客户端信息有误，请求信息不能为空");
        }
        ClientInfo clientInfo = query().eq("client_id", clientId).one();

        if(clientInfo==null){
            throw new LyException(400,"客户端信息有误，"+clientId+"不存在！");
        }
        boolean matches = passwordEncoder.matches(secret, clientInfo.getSecret());

        if(!matches){
            throw new LyException(400,"客户端信息有误，secret不正确！");
        }
        return key;
    }
}
